#ifndef EXTENSION_H
#define EXTENSION_H

/**
 * 定义扩展函数的声明
 * @param Struct 结构体类型名
 * @param func_name 扩展函数名
 * @param return_type 返回值类型
 * @param ... 函数参数列表（不含self）
 */
#define DEFINE_EXTENSION(Struct, func_name, return_type, ...) \
    return_type Struct##_##func_name(Struct* self, ##__VA_ARGS__)

/**
 * 调用扩展函数（显式指定类型，便于调试）
 * @param Struct 结构体类型名
 * @param obj 结构体实例指针
 * @param func_name 扩展函数名
 * @param ... 函数参数
 */
#define EXTEND(Struct, obj, func_name, ...) \
    Struct##_##func_name((obj), ##__VA_ARGS__)

#endif // EXTENSION_H
